package com.danskin.wechat.service;

import java.math.BigDecimal;
import java.util.Date;

/**
 * 发送微信消息模版
 * 
 * @author likui.liu
 *
 */
public interface WechatMsgTemplateService {

	/**
	 * 会员绑定成功通知
	 * 
	 * @param accessToken
	 *            公众号凭证access_token
	 * @param appId
	 *            公众号AppId
	 * @param openId
	 *            粉丝openId
	 * @param nickName
	 *            微信昵称
	 * @param mobile
	 *            手机号
	 */
	void sendCustBindMsg(String accessToken, String appId, String openId, String nickName, String mobile);

	/**
	 * 会员注册成功通知
	 * 
	 * @param accessToken
	 *            公众号凭证access_token
	 * @param appId
	 *            公众号AppId
	 * @param openId
	 *            粉丝openId
	 * @param nickName
	 *            微信昵称
	 * @param mobile
	 *            手机号
	 * @param memberId
	 *            会员编号
	 */
	void sendCustSignupMsg(String accessToken, String appId, String openId, String nickName, String mobile,
			String memberId);

	/**
	 * 实物新人礼领取消息通知
	 * 
	 * @param custName
	 *            会员姓名
	 * @param consigneeName
	 *            领取人姓名
	 * @param goodsName
	 *            礼品名称
	 */
	void sendCustGetGoodsMsg(String accessToken, String appId, String openId, String custName, String consigneeName,
			String goodsName);

	/**
	 * 券发放消息通知
	 * 
	 * @param accessToken
	 *            公众号凭证access_token
	 * @param appId
	 *            公众号AppId
	 * @param openId
	 *            粉丝openId
	 * @param custName
	 *            会员姓名
	 * @param couponName
	 *            券名称
	 */
	void sendCustGetCouponMsg(String accessToken, String appId, String openId, String custName, String couponName);

	/**
	 * 券使用消息通知
	 * 
	 * @param accessToken
	 *            公众号凭证access_token
	 * @param appId
	 *            公众号AppId
	 * @param openId
	 *            粉丝openId
	 * @param custName
	 *            会员姓名
	 * @param couponName
	 *            券名称
	 */
	void sendCustUseCouponMsg(String accessToken, String appId, String openId, String custName, String couponName);

	/**
	 * 积分变动通知
	 * 
	 * @param accessToken
	 *            公众号凭证access_token
	 * @param appId
	 *            公众号AppId
	 * @param openId
	 *            粉丝openId
	 * @param custName
	 *            会员姓名
	 * @param mobile
	 *            手机号码
	 * @param changePoints
	 *            变动的积分数量
	 * @param avaPoints
	 *            会员剩余可用积分
	 */
	void sendCustChangePointsMsg(String accessToken, String appId, String openId, String custName, String mobile,
			int changePoints, int avaPoints);

	/**
	 * 积分兑换商品成功通知
	 * 
	 * @param accessToken
	 *            公众号凭证access_token
	 * @param appId
	 *            公众号AppId
	 * @param openId
	 *            粉丝openId
	 * @param custName
	 *            会员姓名
	 * @param mobile
	 *            手机号
	 * @param itemName
	 *            商品名称
	 * @param quantity
	 *            兑换数量
	 * @param totalPoints
	 *            消耗积分
	 */
	void sendCustPointGetItemMsg(String accessToken, String appId, String openId, String custName, String mobile,
			String itemName, int quantity, int totalPoints);

	/**
	 * 互动活动报名成功
	 * 
	 * @param accessToken
	 *            公众号凭证access_token
	 * @param appId
	 *            公众号AppId
	 * @param openId
	 *            粉丝openId
	 * @param activityTitle
	 *            活动标题
	 * @param beginTime
	 *            开始时间
	 * @param endTime
	 *            结束时间
	 * @param address
	 *            活动地点
	 * @param description
	 *            活动详情
	 */
	void sendCustJoinApplyMsg(String accessToken, String appId, String openId, String activityTitle, Date beginTime,
			Date endTime, String address, String description);

	/**
	 * 投票成功通知
	 * 
	 * @param accessToken
	 *            公众号凭证access_token
	 * @param appId
	 *            公众号AppId
	 * @param openId
	 *            粉丝openId
	 * @param activityTitle
	 *            活动标题
	 * @param joinTime
	 *            参与时间
	 */
	void sendCustJoinVoteMsg(String accessToken, String appId, String openId, String activityTitle, Date joinTime);

	/**
	 * 订单支付成功通知
	 * 
	 * @param accessToken
	 *            公众号凭证access_token
	 * @param appId
	 *            公众号AppId
	 * @param openId
	 *            粉丝openId
	 * @param custName
	 *            会员姓名
	 * @param orderNo
	 *            订单号
	 * @param amount
	 *            订单金额
	 * @param storeName
	 *            门店名称
	 * @param payTime
	 *            消费时间
	 */
	void sendCustPayOrderMsg(String accessToken, String appId, String openId, String custName, String orderNo,
			BigDecimal amount, String storeName, Date payTime);
}
